{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "inFilePath = r'C:\\Users\\Nature\\Desktop\\STUDY\\Programming\\Works\\Programming-In-Learning-Bioinformatics-ZeFengZhu\\M_Probability&Statistics\\ModernStatistics\\data\\exercise1-data.txt'\n",
    "\n",
    "dfrm = pd.read_csv(inFilePath, sep='\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class.ID</th>\n",
       "      <th>Class.name</th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Female.count</th>\n",
       "      <th>Male.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>按性别统计</td>\n",
       "      <td>总人数</td>\n",
       "      <td>20</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>事业方面</td>\n",
       "      <td>付出回报</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>事业方面</td>\n",
       "      <td>工作环境</td>\n",
       "      <td>10</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>事业方面</td>\n",
       "      <td>工作收入</td>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>事业方面</td>\n",
       "      <td>工作内容</td>\n",
       "      <td>10</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2</td>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>适应能力</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>应变能力</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2</td>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>人际交往</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2</td>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>学业</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>心理健康</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>家庭状况</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>自身健康</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>家人健康</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>家庭关系</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>夫妻关系</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>3</td>\n",
       "      <td>家庭方面</td>\n",
       "      <td>教育程度</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>14</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>衣</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>食</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>住</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>行</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>4</td>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>娱乐休闲等</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>5</td>\n",
       "      <td>社会方面</td>\n",
       "      <td>社会福利</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>5</td>\n",
       "      <td>社会方面</td>\n",
       "      <td>社会环境</td>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>5</td>\n",
       "      <td>社会方面</td>\n",
       "      <td>生态环境</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>5</td>\n",
       "      <td>社会方面</td>\n",
       "      <td>医疗保障</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>5</td>\n",
       "      <td>社会方面</td>\n",
       "      <td>教育资源</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Class.ID Class.name Subclass.name  Female.count  Male.count\n",
       "0          0      按性别统计           总人数            20           9\n",
       "1          1       事业方面          付出回报             9           5\n",
       "2          1       事业方面          工作环境            10           5\n",
       "3          1       事业方面          工作收入            19           9\n",
       "4          1       事业方面          工作内容            10           5\n",
       "5          2     个人能力方面          适应能力             3           0\n",
       "6          2     个人能力方面          应变能力             1           0\n",
       "7          2     个人能力方面          人际交往             8           1\n",
       "8          2     个人能力方面            学业             1           2\n",
       "9          2     个人能力方面          心理健康             2           0\n",
       "10         3       家庭方面          家庭状况             6           4\n",
       "11         3       家庭方面          自身健康             9           5\n",
       "12         3       家庭方面          家人健康             8           4\n",
       "13         3       家庭方面          家庭关系            11           2\n",
       "14         3       家庭方面          夫妻关系            10           2\n",
       "15         3       家庭方面          教育程度             6           2\n",
       "16         4     生活消费方面        家庭物质生活            14           7\n",
       "17         4     生活消费方面             衣            13           6\n",
       "18         4     生活消费方面             食            13           6\n",
       "19         4     生活消费方面             住            13           7\n",
       "20         4     生活消费方面             行            13           7\n",
       "21         4     生活消费方面         娱乐休闲等             9           6\n",
       "22         5       社会方面          社会福利            11           2\n",
       "23         5       社会方面          社会环境            14           4\n",
       "24         5       社会方面          生态环境            12           3\n",
       "25         5       社会方面          医疗保障             6           4\n",
       "26         5       社会方面          教育资源             3           1"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfrm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "个人能力方面 \n",
      "    Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "5         2     个人能力方面          适应能力             3           0          3\n",
      "6         2     个人能力方面          应变能力             1           0          1\n",
      "7         2     个人能力方面          人际交往             8           1          9\n",
      "8         2     个人能力方面            学业             1           2          3\n",
      "9         2     个人能力方面          心理健康             2           0          2\n",
      "事业方面 \n",
      "    Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "1         1       事业方面          付出回报             9           5         14\n",
      "2         1       事业方面          工作环境            10           5         15\n",
      "3         1       事业方面          工作收入            19           9         28\n",
      "4         1       事业方面          工作内容            10           5         15\n",
      "家庭方面 \n",
      "     Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "10         3       家庭方面          家庭状况             6           4         10\n",
      "11         3       家庭方面          自身健康             9           5         14\n",
      "12         3       家庭方面          家人健康             8           4         12\n",
      "13         3       家庭方面          家庭关系            11           2         13\n",
      "14         3       家庭方面          夫妻关系            10           2         12\n",
      "15         3       家庭方面          教育程度             6           2          8\n",
      "按性别统计 \n",
      "    Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "0         0      按性别统计           总人数            20           9         29\n",
      "生活消费方面 \n",
      "     Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "16         4     生活消费方面        家庭物质生活            14           7         21\n",
      "17         4     生活消费方面             衣            13           6         19\n",
      "18         4     生活消费方面             食            13           6         19\n",
      "19         4     生活消费方面             住            13           7         20\n",
      "20         4     生活消费方面             行            13           7         20\n",
      "21         4     生活消费方面         娱乐休闲等             9           6         15\n",
      "社会方面 \n",
      "     Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
      "22         5       社会方面          社会福利            11           2         13\n",
      "23         5       社会方面          社会环境            14           4         18\n",
      "24         5       社会方面          生态环境            12           3         15\n",
      "25         5       社会方面          医疗保障             6           4         10\n",
      "26         5       社会方面          教育资源             3           1          4\n"
     ]
    }
   ],
   "source": [
    "for name,data in dfrm.groupby(['Class.name']):\n",
    "    print(name,'\\n',data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">分别计算 5 大类中所有子栏目的比例均值和标准差。如上图所示，事业方面包括 5个子栏目，根据者 5 个子栏目的统计数据(count)，利用 R 语言环境下的相关函数计算其均值和标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n",
    "info_dict = defaultdict(list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class.name</th>\n",
       "      <th>fe_%mean</th>\n",
       "      <th>fe_std</th>\n",
       "      <th>ma_%mean</th>\n",
       "      <th>ma_std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>个人能力方面</td>\n",
       "      <td>0.150000</td>\n",
       "      <td>2.915476</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>0.894427</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>事业方面</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>4.690416</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>家庭方面</td>\n",
       "      <td>0.416667</td>\n",
       "      <td>2.065591</td>\n",
       "      <td>0.351852</td>\n",
       "      <td>1.329160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>生活消费方面</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>1.760682</td>\n",
       "      <td>0.722222</td>\n",
       "      <td>0.547723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>社会方面</td>\n",
       "      <td>0.460000</td>\n",
       "      <td>4.549725</td>\n",
       "      <td>0.311111</td>\n",
       "      <td>1.303840</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Class.name  fe_%mean    fe_std  ma_%mean    ma_std\n",
       "0     个人能力方面  0.150000  2.915476  0.066667  0.894427\n",
       "1       事业方面  0.600000  4.690416  0.666667  2.000000\n",
       "2       家庭方面  0.416667  2.065591  0.351852  1.329160\n",
       "3     生活消费方面  0.625000  1.760682  0.722222  0.547723\n",
       "4       社会方面  0.460000  4.549725  0.311111  1.303840"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_col = ['Female.count', 'Male.count']\n",
    "allma = dfrm.loc[0, data_col[1]]\n",
    "allfe = dfrm.loc[0, data_col[0]]\n",
    "info_dict = defaultdict(list)\n",
    "for groupName, groupData in dfrm.loc[1:,].groupby(['Class.name']):\n",
    "    se1 = groupData[data_col].mean()\n",
    "    se2 = groupData[data_col].std()\n",
    "    info_dict['Class.name'].append(groupName)\n",
    "    info_dict['fe_%mean'].append(se1[data_col[0]]/allfe)\n",
    "    info_dict['fe_std'].append(se2[data_col[0]])\n",
    "    info_dict['ma_%mean'].append(se1[data_col[1]]/allma)\n",
    "    info_dict['ma_std'].append(se2[data_col[1]])\n",
    "pd.DataFrame(info_dict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 所有人共同最关心的前10个指标 不分性别，混合统计，根据给定的数据表，筛选所有人均最关心的前 10 个指标 (Subclass)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfrm['all.count'] = dfrm[data_col[0]] + dfrm[data_col[1]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>all.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>工作收入</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>行</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>住</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>食</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>衣</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>社会环境</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>工作环境</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>工作内容</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>生态环境</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>娱乐休闲等</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Subclass.name  all.count\n",
       "1           工作收入         28\n",
       "2         家庭物质生活         21\n",
       "3              行         20\n",
       "4              住         20\n",
       "5              食         19\n",
       "6              衣         19\n",
       "7           社会环境         18\n",
       "8           工作环境         15\n",
       "9           工作内容         15\n",
       "10          生态环境         15\n",
       "11         娱乐休闲等         15"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfrm.sort_values(['all.count'], ascending=False).reset_index(drop=True).loc[1:11, ['Subclass.name', 'all.count']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Female.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>工作收入</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>社会环境</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>行</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>住</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>食</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>衣</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>生态环境</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>社会福利</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>家庭关系</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>夫妻关系</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Subclass.name  Female.count\n",
       "1           工作收入            19\n",
       "2         家庭物质生活            14\n",
       "3           社会环境            14\n",
       "4              行            13\n",
       "5              住            13\n",
       "6              食            13\n",
       "7              衣            13\n",
       "8           生态环境            12\n",
       "9           社会福利            11\n",
       "10          家庭关系            11\n",
       "11          夫妻关系            10"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feFocus_df = dfrm.sort_values(['Female.count'],\n",
    "                              ascending=False).reset_index(drop=True).loc[1:11, ['Subclass.name', 'Female.count']]\n",
    "feFocus_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Male.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>工作收入</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>住</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>行</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>食</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>娱乐休闲等</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>衣</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>自身健康</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>付出回报</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>工作内容</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>工作环境</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Subclass.name  Male.count\n",
       "1           工作收入           9\n",
       "2         家庭物质生活           7\n",
       "3              住           7\n",
       "4              行           7\n",
       "5              食           6\n",
       "6          娱乐休闲等           6\n",
       "7              衣           6\n",
       "8           自身健康           5\n",
       "9           付出回报           5\n",
       "10          工作内容           5\n",
       "11          工作环境           5"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "maFocus_df = dfrm.sort_values(['Male.count'],\n",
    "                              ascending=False).reset_index(drop=True).loc[1:11, ['Subclass.name', 'Male.count']]\n",
    "maFocus_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Female.count</th>\n",
       "      <th>Male.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>工作收入</td>\n",
       "      <td>19.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>14.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>社会环境</td>\n",
       "      <td>14.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>行</td>\n",
       "      <td>13.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>住</td>\n",
       "      <td>13.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>食</td>\n",
       "      <td>13.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>衣</td>\n",
       "      <td>13.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>生态环境</td>\n",
       "      <td>12.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>社会福利</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>家庭关系</td>\n",
       "      <td>11.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>夫妻关系</td>\n",
       "      <td>10.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>娱乐休闲等</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>自身健康</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>付出回报</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>工作内容</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>工作环境</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Subclass.name  Female.count  Male.count\n",
       "0           工作收入          19.0         9.0\n",
       "1         家庭物质生活          14.0         7.0\n",
       "2           社会环境          14.0         NaN\n",
       "3              行          13.0         7.0\n",
       "4              住          13.0         7.0\n",
       "5              食          13.0         6.0\n",
       "6              衣          13.0         6.0\n",
       "7           生态环境          12.0         NaN\n",
       "8           社会福利          11.0         NaN\n",
       "9           家庭关系          11.0         NaN\n",
       "10          夫妻关系          10.0         NaN\n",
       "11         娱乐休闲等           NaN         6.0\n",
       "12          自身健康           NaN         5.0\n",
       "13          付出回报           NaN         5.0\n",
       "14          工作内容           NaN         5.0\n",
       "15          工作环境           NaN         5.0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "union_df = pd.merge(feFocus_df, maFocus_df, how='outer')\n",
    "union_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Female.count</th>\n",
       "      <th>Male.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>工作收入</td>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>家庭物质生活</td>\n",
       "      <td>14</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>行</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>住</td>\n",
       "      <td>13</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>食</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>衣</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Subclass.name  Female.count  Male.count\n",
       "0          工作收入            19           9\n",
       "1        家庭物质生活            14           7\n",
       "2             行            13           7\n",
       "3             住            13           7\n",
       "4             食            13           6\n",
       "5             衣            13           6"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "commonFocus_df = pd.merge(feFocus_df, maFocus_df, how='inner')\n",
    "commonFocus_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "from matplotlib_venn import venn2\n",
    "\n",
    "colNameDi = {'夫妻关系':'Couple Relations', \n",
    "             '社会福利':'Social Welfare', \n",
    "             '社会环境':'Social Environment', \n",
    "             '生态环境':'Ecological Environment', \n",
    "             '家庭关系':'Family Relations',\n",
    "             '衣':'Clothing',\n",
    "             '工作收入':'Work Income',\n",
    "             '行':'Travel',\n",
    "             '家庭物质生活':'Family Material Life',\n",
    "             '住':'Household',\n",
    "             '食': 'Food',\n",
    "             '自身健康':'Self-health',\n",
    "             '工作内容':'Working Content',\n",
    "             '付出回报':'Paying Rewards',\n",
    "             '工作环境':'Working Environment',\n",
    "             '娱乐休闲等':'Entertainment Leisure',\n",
    "            }\n",
    "\n",
    "A = set([colNameDi[i] for i in feFocus_df['Subclass.name']])\n",
    "B = set([colNameDi[i] for i in maFocus_df['Subclass.name']])\n",
    "\n",
    "v = venn2(subsets=[A, B], set_labels=('female', 'male'))\n",
    "\n",
    "v.get_label_by_id('10').set_text('\\n'.join(A-B))\n",
    "v.get_label_by_id('11').set_text('\\n'.join(A&B))\n",
    "v.get_label_by_id('01').set_text('\\n'.join(B-A))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on VennDiagram in module matplotlib_venn._common object:\n",
      "\n",
      "class VennDiagram(builtins.object)\n",
      " |  A container for a set of patches and patch labels and set labels, which make up the rendered venn diagram.\n",
      " |  This object is returned by a venn2 or venn3 function call.\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __init__(self, patches, subset_labels, set_labels, centers, radii)\n",
      " |      Initialize self.  See help(type(self)) for accurate signature.\n",
      " |  \n",
      " |  get_circle_center(self, id)\n",
      " |      Returns the coordinates of the center of a circle as a numpy array (x,y)\n",
      " |      id must be 0, 1 or 2 (corresponding to the first, second, or third circle). \n",
      " |      This is a getter-only (i.e. changing this value does not affect the diagram)\n",
      " |  \n",
      " |  get_circle_radius(self, id)\n",
      " |      Returns the radius of circle id (where id is 0, 1 or 2).\n",
      " |      This is a getter-only (i.e. changing this value does not affect the diagram)\n",
      " |  \n",
      " |  get_label_by_id(self, id)\n",
      " |      Returns a subset label by a \"region id\". \n",
      " |      A region id is a string '10', '01' or '11' for 2-circle diagram or a \n",
      " |      string like '001', '010', etc, for 3-circle diagram.\n",
      " |      Alternatively, if the string 'A', 'B'  (or 'C' for 3-circle diagram) is given, the label of the\n",
      " |      corresponding set is returned (or None).\n",
      " |  \n",
      " |  get_patch_by_id(self, id)\n",
      " |      Returns a patch by a \"region id\". \n",
      " |      A region id is a string '10', '01' or '11' for 2-circle diagram or a \n",
      " |      string like '001', '010', etc, for 3-circle diagram.\n",
      " |  \n",
      " |  hide_zeroes(self)\n",
      " |      Sometimes it makes sense to hide the labels for subsets whose size is zero.\n",
      " |      This utility method does this.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors defined here:\n",
      " |  \n",
      " |  __dict__\n",
      " |      dictionary for instance variables (if defined)\n",
      " |  \n",
      " |  __weakref__\n",
      " |      list of weak references to the object (if defined)\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data and other attributes defined here:\n",
      " |  \n",
      " |  id2idx = {'001': 3, '01': 1, '010': 1, '011': 5, '10': 0, '100': 0, '1...\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib_venn._common.VennDiagram at 0x23a0b782358>"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.annotate(',\\n'.join(B-A-C), xy=v.get_label_by_id('010').get_position() +\n",
    "             np.array([0, 0.2]), xytext=(-20,40), ha='center',\n",
    "             textcoords='offset points', \n",
    "             bbox=dict(boxstyle='round,pad=0.5', fc='gray', alpha=0.1),\n",
    "             arrowprops=dict(arrowstyle='->',              \n",
    "                             connectionstyle='arc',color='gray'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 贝叶斯公式的简单应用\n",
    "将性别中,男性记为 A，女性记为~A;分析栏目中只考虑事业和家庭两大类，并将 事业和家庭记为 B 和~B。则本次分析案例中: \n",
    "* $P(男)=P(A)= $\n",
    "* $P(女)=P(-A)= $\n",
    "* $P(事业)=P(B)= $\n",
    "* $P(家庭)=P(-B)= $\n",
    "* $P(事业|男)=P(B|A) = mp1/(mp1+mp3)=$\n",
    "* $P(家庭|男)=P(-B|A) = mp3/(mp1+mp3)=$\n",
    "* $P(事业|女)=P(B|-A) = fp1/(fp1+fp3) =$\n",
    "* $P(家庭|女)=P(-B|-A)=fp3/(fp1+fp3) =$\n",
    "\n",
    "计算不同性别的人在日常工作生活中，面临事业和家庭的选择时，选择事业的男性概率$P(男|事业)$是多少?选择家庭的女性概率$P(女|家庭)$是多少? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "ana_df = dfrm[dfrm['Class.name'].isin(['事业方面','家庭方面'])].copy()\n",
    "name_di = {'事业方面': 'B', '家庭方面': '~B'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class.ID</th>\n",
       "      <th>Class.name</th>\n",
       "      <th>Subclass.name</th>\n",
       "      <th>Female.count</th>\n",
       "      <th>Male.count</th>\n",
       "      <th>all.count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>B</td>\n",
       "      <td>付出回报</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>B</td>\n",
       "      <td>工作环境</td>\n",
       "      <td>10</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>B</td>\n",
       "      <td>工作收入</td>\n",
       "      <td>19</td>\n",
       "      <td>9</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>B</td>\n",
       "      <td>工作内容</td>\n",
       "      <td>10</td>\n",
       "      <td>5</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>家庭状况</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>自身健康</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>家人健康</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>家庭关系</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>夫妻关系</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>3</td>\n",
       "      <td>~B</td>\n",
       "      <td>教育程度</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Class.ID Class.name Subclass.name  Female.count  Male.count  all.count\n",
       "1          1          B          付出回报             9           5         14\n",
       "2          1          B          工作环境            10           5         15\n",
       "3          1          B          工作收入            19           9         28\n",
       "4          1          B          工作内容            10           5         15\n",
       "10         3         ~B          家庭状况             6           4         10\n",
       "11         3         ~B          自身健康             9           5         14\n",
       "12         3         ~B          家人健康             8           4         12\n",
       "13         3         ~B          家庭关系            11           2         13\n",
       "14         3         ~B          夫妻关系            10           2         12\n",
       "15         3         ~B          教育程度             6           2          8"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ana_df['Class.name'] = ana_df.apply(lambda x: name_di[x['Class.name']], axis=1)\n",
    "ana_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.6950354609929078, 0.3049645390070922)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ana_all_num = ana_df['all.count'].sum()\n",
    "pa = ana_df['Female.count'].sum()/ana_all_num\n",
    "n_pa = ana_df['Male.count'].sum()/ana_all_num\n",
    "pa, n_pa"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.5106382978723404, 0.48936170212765956)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pb = ana_df[ana_df['Class.name'] == 'B']['all.count'].sum()/ana_all_num\n",
    "n_pb = ana_df[ana_df['Class.name'] != 'B']['all.count'].sum()/ana_all_num\n",
    "pb, n_pb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.5581395348837209, 0.24489795918367346, 0.3404255319148936)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 𝑃(𝐵|𝐴) = 𝑚𝑝1/(𝑚𝑝1+𝑚𝑝3)\n",
    "# pab = \n",
    "# pb_a = pab/pa\n",
    "pb_a = ana_df[ana_df['Class.name'] == 'B']['Male.count'].sum()/ana_df['Male.count'].sum()\n",
    "\n",
    "pab = ana_df[ana_df['Class.name'] == 'B']['Male.count'].sum()/ana_df['all.count'].sum()\n",
    "\n",
    "ideal_pb_a = pab/0.5\n",
    "\n",
    "pb_a,pab/pa,ideal_pb_a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4418604651162791"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pnb_a = ana_df[ana_df['Class.name'] != 'B']['Male.count'].sum()/ana_df['Male.count'].sum()\n",
    "pnb_a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.4897959183673469, 0.5102040816326531)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pb_na = ana_df[ana_df['Class.name'] == 'B']['Female.count'].sum()/ana_df['Female.count'].sum()\n",
    "pnb_na = ana_df[ana_df['Class.name'] != 'B']['Female.count'].sum()/ana_df['Female.count'].sum()\n",
    "pb_na,pnb_na"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.3333333333333333, 0.7246376811594203)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 𝑃(男|事业) 是多少?选择家庭的女性概率 𝑃(女|家庭)s?\n",
    "pa_b = ana_df[ana_df['Class.name'] == 'B']['Male.count'].sum()/ana_df[ana_df['Class.name'] == 'B']['all.count'].sum()\n",
    "pna_nb = ana_df[ana_df['Class.name'] != 'B']['Female.count'].sum()/ana_df[ana_df['Class.name'] != 'B']['all.count'].sum()\n",
    "pa_b, pna_nb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
